/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package persistencia;

import videogest.Proveedor;
import java.sql.*;

/**
 *
 * @author Administrador
 */
public class persistenciaProveedor {

    public static void alta(Proveedor proveedor) {
          int i=0;
         //System.out.println("Enviado a la base de datos...");
         Connection con = null;
         Statement st =  null;
         try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/videogest", "root", "root");
            st = (Statement) con.createStatement();
            String sSql;
            sSql = "insert into proveedor values('" + proveedor.getNombre() + "','" + proveedor.getDireccion() + "','" + proveedor.getTelefono()
                    + "','" + proveedor.getEmail() + "','" + proveedor.getCIF() + "','"+proveedor.isBaja()+"')";

            i = st.executeUpdate(sSql);
           //System.out.println(i);
        } catch (InstantiationException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Instanciación. Detalle del error!!");
            System.out.println(ex);
        } catch (IllegalAccessException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Acceso. Detalle del error!!");
            System.out.println(ex);
        } catch (SQLException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de SQL. Detalle del error!!");
            System.out.println(ex);
        } catch (ClassNotFoundException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! No encuentra \"com.mysql.jdbc.Driver\". Detalle del error!!");
            System.out.println(ex);
        }finally{
            try {
                st.close();
                con.close();
            } catch (SQLException ex) {
                //Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Error de SQL, al cerrar la conexión. Detalle del Error!!");
                System.out.println(ex);
            }
        }

        if(i>0){
            System.out.println("Se ha grabado correctamente la inserción en la base de datos...");
        }else{
            System.out.println("¡ERROR! No se ha podido grabar la inserción en la base de datos.");
        }

    }

    public static void modificar(Proveedor proveedor) {
         int i=0;
         Connection con = null;
         Statement st =  null;
         try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/videogest", "root", "root");
            st = (Statement) con.createStatement();
            String sSql;
            sSql = "update proveedor set cif='"+proveedor.getCIF()+"',nombre='" + proveedor.getNombre() + "', direccion='" + proveedor.getDireccion()
                    + "',telefono='" + proveedor.getTelefono() + "',email='" + proveedor.getEmail() + "', baja='"+proveedor.isBaja()+"'"
                    + " where cif='"+proveedor.getCIF()+"';";

            i = st.executeUpdate(sSql);
           //System.out.println(i);
        } catch (InstantiationException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Instanciación. Detalle del error!!");
            System.out.println(ex);
        } catch (IllegalAccessException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Acceso. Detalle del error!!");
            System.out.println(ex);
        } catch (SQLException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de SQL. Detalle del error!!");
            System.out.println(ex);
        } catch (ClassNotFoundException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! No encuentra \"com.mysql.jdbc.Driver\". Detalle del error!!");
            System.out.println(ex);
        }finally{
            try {
                st.close();
                con.close();
            } catch (SQLException ex) {
                //Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Error de SQL, al cerrar la conexión. Detalle del Error!!");
                System.out.println(ex);
            }
        }

        if(i>0){
            System.out.println("Se ha grabado correctamente la modificación en la base de datos...");
        }else{
            System.out.println("¡ERROR! No se ha podido grabar la modificación en la base de datos.");
        }
    }

    public static Proveedor dameProveedor(String cif) {

        Proveedor proveedor = null;
        String nombre = null;
        String direccion = null;
        String telefono = null;
        String email = null;
        String cifP = null;
        boolean baja = false;
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/videogest", "root", "root");
            st = (Statement) con.createStatement();
            rs = st.executeQuery("select * from proveedor where cif='" + cif + "';");

            /*
             * Este while recorre el resultado de la consulta (que deberá devolver un solo registro)
             * e introduce cada campo en cada atributo para despues crear el cliente con esos valores.
             */
            while (rs.next()) {
                nombre = rs.getString("nombre");
                direccion = rs.getString("direccion");
                telefono = rs.getString("telefono");
                email = rs.getString("email");
                cifP = rs.getString("cif");
                baja = Boolean.parseBoolean(rs.getString("baja"));
            }

            // esto comprueba si se ha obtenido el cliente con este codigo, sino, queda el cliente a null
            if(cifP!=null){
                proveedor = new Proveedor(nombre, direccion, telefono, email, cif, baja);
            }

            //System.out.print(cliente);


        } catch (InstantiationException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Instanciación. Detalle del error!!");
            System.out.println(ex);
        } catch (IllegalAccessException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de Acceso. Detalle del error!!");
            System.out.println(ex);
        } catch (SQLException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error de SQL. Detalle del error!!");
            System.out.println(ex);
        } catch (ClassNotFoundException ex) {
            //Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error!! No encuentra \"com.mysql.jdbc.Driver\". Detalle del error!!");
            System.out.println(ex);
        }finally{
            try {
                rs.close();
                st.close();
                con.close();
            } catch (SQLException ex) {
                //Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Error de SQL, al cerrar la conexión. Detalle del Error!!");
                System.out.println(ex);
            }
        }
        return proveedor;
    }










}
